package com.entity;

import com.baomidou.mybatisplus.annotations.TableId;
import com.baomidou.mybatisplus.annotations.TableName;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;

import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import java.lang.reflect.InvocationTargetException;

import java.io.Serializable;
import java.util.Date;
import java.util.List;

import org.springframework.format.annotation.DateTimeFormat;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.apache.commons.beanutils.BeanUtils;
import com.baomidou.mybatisplus.annotations.TableField;
import com.baomidou.mybatisplus.enums.FieldFill;
import com.baomidou.mybatisplus.enums.IdType;


/**
 * 工艺品信息
 * 数据库通用操作实体类（普通增删改查）
 * 该类表示一个工艺品信息对象，包含了工艺品的各种属性，能够映射数据库表`gongyipinxinxi`，并提供了相关的 getter 和 setter 方法。
 *
 * @author team10
 */
@TableName("gongyipinxinxi")
public class GongyipinxinxiEntity<T> implements Serializable {
	private static final long serialVersionUID = 1L;


	/**
	 * 默认构造函数
	 * 用于实例化一个空的工艺品信息对象
	 */
	public GongyipinxinxiEntity() {

	}

	/**
	 * 构造函数，使用另一个对象的属性初始化当前对象
	 * @param t 传入的对象
	 */
	public GongyipinxinxiEntity(T t) {
		try {
			// 使用 BeanUtils.copyProperties 方法复制属性
			BeanUtils.copyProperties(this, t);
		} catch (IllegalAccessException | InvocationTargetException e) {
			// 异常处理
			e.printStackTrace();
		}
	}

	/**
	 * 主键id
	 * 通过注解 @TableId 标注该字段为主键，并且使用自动增长策略
	 */
	@TableId
	private Long id;

	/**
	 * 工艺品名称
	 * 该字段存储工艺品的名称
	 */
	private String gongyipinmingcheng;

	/**
	 * 工艺品类型
	 * 该字段存储工艺品的类型
	 */
	private String gongyipinleixing;

	/**
	 * 规格
	 * 该字段存储工艺品的规格
	 */
	private String guige;

	/**
	 * 材质
	 * 该字段存储工艺品的材质信息
	 */
	private String caizhi;

	/**
	 * 制作人
	 * 该字段存储工艺品的制作人
	 */
	private String zhizuoren;

	/**
	 * 上架时间
	 * 使用 @JsonFormat 和 @DateTimeFormat 来格式化日期
	 * 该字段存储工艺品的上架时间
	 */
	@JsonFormat(locale="zh", timezone="GMT+8", pattern="yyyy-MM-dd")
	@DateTimeFormat
	private Date shangjiashijian;

	/**
	 * 详情描述
	 * 该字段存储工艺品的详细描述信息
	 */
	private String xiangqingmiaoshu;

	/**
	 * 图片
	 * 该字段存储工艺品的图片路径
	 */
	private String tupian;

	/**
	 * 赞
	 * 该字段存储工艺品的赞数量
	 */
	private Integer thumbsupnum;

	/**
	 * 踩
	 * 该字段存储工艺品的踩数量
	 */
	private Integer crazilynum;

	/**
	 * 添加时间
	 * 使用 @JsonFormat 和 @DateTimeFormat 来格式化日期
	 * 该字段存储工艺品记录的添加时间
	 */
	@JsonFormat(locale="zh", timezone="GMT+8", pattern="yyyy-MM-dd HH:mm:ss")
	@DateTimeFormat
	private Date addtime;

	// Getter 和 Setter 方法

	/**
	 * 获取添加时间
	 * @return 添加时间
	 */
	public Date getAddtime() {
		return addtime;
	}

	/**
	 * 设置添加时间
	 * @param addtime 添加时间
	 */
	public void setAddtime(Date addtime) {
		this.addtime = addtime;
	}

	/**
	 * 获取主键id
	 * @return 主键id
	 */
	public Long getId() {
		return id;
	}

	/**
	 * 设置主键id
	 * @param id 主键id
	 */
	public void setId(Long id) {
		this.id = id;
	}

	/**
	 * 获取工艺品名称
	 * @return 工艺品名称
	 */
	public String getGongyipinmingcheng() {
		return gongyipinmingcheng;
	}

	/**
	 * 设置工艺品名称
	 * @param gongyipinmingcheng 工艺品名称
	 */
	public void setGongyipinmingcheng(String gongyipinmingcheng) {
		this.gongyipinmingcheng = gongyipinmingcheng;
	}

	/**
	 * 获取工艺品类型
	 * @return 工艺品类型
	 */
	public String getGongyipinleixing() {
		return gongyipinleixing;
	}

	/**
	 * 设置工艺品类型
	 * @param gongyipinleixing 工艺品类型
	 */
	public void setGongyipinleixing(String gongyipinleixing) {
		this.gongyipinleixing = gongyipinleixing;
	}

	/**
	 * 获取规格
	 * @return 规格
	 */
	public String getGuige() {
		return guige;
	}

	/**
	 * 设置规格
	 * @param guige 规格
	 */
	public void setGuige(String guige) {
		this.guige = guige;
	}

	/**
	 * 获取材质
	 * @return 材质
	 */
	public String getCaizhi() {
		return caizhi;
	}

	/**
	 * 设置材质
	 * @param caizhi 材质
	 */
	public void setCaizhi(String caizhi) {
		this.caizhi = caizhi;
	}

	/**
	 * 获取制作人
	 * @return 制作人
	 */
	public String getZhizuoren() {
		return zhizuoren;
	}

	/**
	 * 设置制作人
	 * @param zhizuoren 制作人
	 */
	public void setZhizuoren(String zhizuoren) {
		this.zhizuoren = zhizuoren;
	}

	/**
	 * 获取上架时间
	 * @return 上架时间
	 */
	public Date getShangjiashijian() {
		return shangjiashijian;
	}

	/**
	 * 设置上架时间
	 * @param shangjiashijian 上架时间
	 */
	public void setShangjiashijian(Date shangjiashijian) {
		this.shangjiashijian = shangjiashijian;
	}

	/**
	 * 获取详情描述
	 * @return 详情描述
	 */
	public String getXiangqingmiaoshu() {
		return xiangqingmiaoshu;
	}

	/**
	 * 设置详情描述
	 * @param xiangqingmiaoshu 详情描述
	 */
	public void setXiangqingmiaoshu(String xiangqingmiaoshu) {
		this.xiangqingmiaoshu = xiangqingmiaoshu;
	}

	/**
	 * 获取图片
	 * @return 图片
	 */
	public String getTupian() {
		return tupian;
	}

	/**
	 * 设置图片
	 * @param tupian 图片
	 */
	public void setTupian(String tupian) {
		this.tupian = tupian;
	}

	/**
	 * 获取赞数量
	 * @return 赞数量
	 */
	public Integer getThumbsupnum() {
		return thumbsupnum;
	}

	/**
	 * 设置赞数量
	 * @param thumbsupnum 赞数量
	 */
	public void setThumbsupnum(Integer thumbsupnum) {
		this.thumbsupnum = thumbsupnum;
	}

	/**
	 * 获取踩数量
	 * @return 踩数量
	 */
	public Integer getCrazilynum() {
		return crazilynum;
	}

	/**
	 * 设置踩数量
	 * @param crazilynum 踩数量
	 */
	public void setCrazilynum(Integer crazilynum) {
		this.crazilynum = crazilynum;
	}

}
